// pages/plugins/news/list/index.js
const app = getApp();
Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 菜单栏列表
    showNavbarList: [],
    // 菜单栏选中项
    navbarIdx: [],
    // 类型列表
    navbarList: [],
    // 页码
    page: 1
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.setData({
      type_id: options.type_id || ''
    })
    options.pageName && (wx.setNavigationBarTitle({
      title: options.pageName,
    }))
    this.loadNewsType();
  },

  // 加载分类
  loadNewsType() {
    var that = this;
    var params = {
      point_url: app.server.agentApi.getNewsTypeList,
      type_id: this.data.type_id
    }
    app.server.getConnect(params).then(function (res) {
      // 最终生成的navbarList
      if(res.data.length>0){
        let temp = [];
        // 最终的选择id
        let idxTemp = [];
        // 第一栏nav内容
        temp.push(res.data);
        idxTemp.push(res.data[0]['id']);
        // 临时nav内容
        let childrenTemp = res.data;
        // 最多10级
        for (let i = 0; i < 10; i++) {
          // 判断是否有子层级
          childrenTemp = that.getArrayChildren(childrenTemp, 0);
          if (childrenTemp === undefined) {
            break;
          } else {
            temp.push(childrenTemp);
            idxTemp.push(childrenTemp[0]['id']);
          }
        }
        that.setData({
          navbarList: res.data,
          showNavbarList: temp,
          navbarIdx: idxTemp
        })
      }
      that.loadNewsList();
    })
  },
  
  // 获取一个数组的子集, arr: 数组;
  getArrayChildren(arr, idx){
    return arr[idx]['children'];
  },

  // 菜单项点击
  bindNavbarTap(e){
    let that = this;
    // 点击项的层级
    let level = e.currentTarget.dataset.level;
    // 点击项的idx
    let idx = e.currentTarget.dataset.tapidx;
    // 点击项的id
    let id = e.currentTarget.dataset.id;
    // 最终生成的navbarList
    let temp = this.data.showNavbarList.slice(0, level+1);
    // 删除点击项子层选择id
    let idxTemp = this.data.navbarIdx.slice(0, level);
    // 加入当前点击的项id
    idxTemp.push(id);
    // 选择点击项层级内容
    let childrenTemp = this.data.showNavbarList[level];
    // 最多10级
    for (let i = 0; i < 10; i++) {
      if(i===0){
        // 当前点击项层级内容是否包含children
        childrenTemp = that.getArrayChildren(childrenTemp, idx);
      }else{
        childrenTemp = that.getArrayChildren(childrenTemp, 0);
      }
      // 无子项时跳出
      if (childrenTemp === undefined) {
        break;
      } else{
        // 有子项目时替换子项, 并选中第一个项的id
        temp.push(childrenTemp);
        idxTemp.push(childrenTemp[0]['id']);
      }
    }
    that.setData({
      showNavbarList: temp,
      navbarIdx: idxTemp
    })
    this.loadNewsList();
  },

  // 加载新闻列表
  loadNewsList() {
    var that = this;
    var params = {
      point_url: app.server.agentApi.getNewsList,
      id: this.data.navbarIdx[this.data.navbarIdx.length-1] || this.data.type_id
    }
    app.server.getConnect(params).then(function (res) {
      that.setData({
        newsList: res.data
      })
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
    app.pageOnloadInit(this, app);
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    // this.setData({
    //   newsList: []
    // })
    // this.loadNewsType();
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {
    this.setData({
      newsList: []
    })
    this.loadNewsType();
    app.pageOnloadInit(this, app);
    wx.stopPullDownRefresh();
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})
